<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
    <div id="app">
        <!-- 父组件可以在引用子组件的时候,通过属性绑定的形式把需要传递给子组件的数据,以属性绑定的形式传递到子组件内,供子组件使用 -->
        <com1 v-bind:parentmsg="msg"></com1>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                msg: '123-父组件中的数据'
            },
            methods: {},
            components: {
                // 默认情况下,子组件无法访问父组件 data 中的数据和 methods 中的方法
                com1: {
                    data() { // 注意:子组件中的 data 数据,并不是通过父组件传递过来的,而是子组件自己私有的,比如:子组件通过 Ajax 请求回来的数据,都可以放到 data 上
                        // data中的数据都是可读可写的
                        return {
                            title: '123',
                            content: 'qqq'
                        }
                    },
                    template: '<h1 @click="change">这是子组件 --- {{parentmsg}}</h1>',
                    // 注意:组件中的所有 props 中的数据,都是通过父组件传递给子组件的
                    // props 中的数据都是只读的,无法重新赋值
                    props: ['parentmsg'], //把父组件传递过来的 parentmsg 属性,在数组中先定义一下,这样才能使用这个数据
                    methods: {
                        // 👇以下方法不要使用
                        change() {
                            this.parentmsg = '被修改了'
                        }
                    }
                }
            }
        });
    </script>
</body>

</html>